package com.itheima.接口.接口和抽象类的区别_05;

//抽象类
public abstract class Animal {
    //1. 成员变量
    private int age;
    public static final double weight = 100;

    //2. 成员方法
    public abstract void eat();

    public void sleep(){
        System.out.println("睡觉");
    }
}


/*
    接口和抽象类的区别:
    从语法上:
        1. 抽象类是类(class),接口是interface
        2. 两者都不能直接创建对象使用!
        3.接口中的成员只能是静态常量!抽象类中的成员变量既可以是静态常量,也可以是普通的成员变量!
        4.接口中的方法只能是抽象的(jdk8和9的默认及静态及私有方法除外),抽象类中的方法既可以抽象,也可以不抽象!
        5.是类就有构造方法,所以抽象类有构造! 接口不是类,接口没有构造!
    从设计上:
        1. 抽象类在设计时,一般都是作为父类,一般都是将子类中的共性内容放在父类中!放的是事物的先天性共性内容!
           体现了代码的复用性,和维护性!

        2. 接口在设计时,是强调后天行为规范的! 一般都是将事物的后天养成的一些行为在接口中进行方法的声明定义,由
           不同的实现类给出不同给的实现,体现的是规则的制定,保证了程序有良好的扩展性
 */
